package config

import (
	"gopkg.in/natefinch/lumberjack.v2"
)

// Configurations exported
type AppConfig struct {
	// 服务启动配置
	Server ServerConfig          `json:"server" yaml:"server"`
	// MSSQL 连接配置
	Mssql  MssqlConnectionConfig `json:"mssql" yaml:"mssql"`
	// 滚动日志配置
	Log    lumberjack.Logger   `json:"log" yaml:"log"`
	// ETH 客户端配置
	EthClient EthClientConfig `json:"ethClient" yaml:"ethClient"`
	// HD 主公钥
	MasterPubKey string `json:"masterPubKey" yaml:"masterPubKey"`
	// 是否调试模式
	Debug bool `json:"debug" yaml:"debug"`
	// Zap    zapcore.EncoderConfig `json:"zap" yaml:"zapEncoder"`
}

// ETH 客户端配置
type EthClientConfig struct {
	// ETH RPC 请求地址
	RpcUrl string `json:"rpcUrl" yaml:"rpcUrl"`
}

// 服务启动配置
type ServerConfig struct {
	// 服务监听端口
	Port int `json:"port" yaml:"port"`
	Bind string `json:"bind" yaml:"bind"`
}

// MSSQL 连接配置
type MssqlConnectionConfig struct {
	// MSSQL 连接主机
	Server     string `json:"server" yaml:"server"`
	// MSSQL 连接数据库名称
	DBName     string `json:"dbName" yaml:"dbName"`
	// MSSQL 连接登录用户
	DBUser     string `json:"dbUser" yaml:"dbUser"`
	// MSSQL 连接登录用户密码
	DBPassword string `json:"dbPassword" yaml:"dbPassword"`
	// MSSQL 连接超时时间
	ConnectionTimeout int `json:"connectionTimeout" yaml:"connectionTimeout"`
	// MSSQL 连接时是否启用加密连接
	Encrypt bool `json:"encrypt" yaml:"encrypt"`
}
